package br.com.Bolao.application.controller.apostas;

import br.com.Bolao.application.controller.BaseController;
import br.com.Bolao.application.dao.apostas.ApostaDAO;
import br.com.Bolao.application.exceptions.ValidationException;
import br.com.Bolao.model.Aposta;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.End;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;

/**
 *
 * @author Vanda
 */
@Scope(ScopeType.CONVERSATION)
@Name("apostaServiceAction")
public class ApostaService extends BaseController {

    @In
    private ApostaDAO apostaDAO;

    /**
     * Método que efetua a aposta feita pelo usuário.
     * @param aposta
     */
    public void apostar(Aposta aposta) {
        /**
         * Valida os campos nulos da aposta.
         */
        try {
            if (aposta.getGolsTime1() == null) {
                throw new ValidationException(aposta.getFkJogo().getTime1().getNome());
            } else {
                if (aposta.getGolsTime2() == null) {
                    throw new ValidationException("" + aposta.getFkJogo().getTime2().getNome());
                }
            }
        } catch (ValidationException e) {
            adicionarMensagemErro("Preencha os gols da equipe : " + e.getMessage());
            return;
        }
        try {
            /**
             * Seta quem foi o vencedor do jogo ou caso seja empate o campos será
             * setado com o valor 0(zero).
             */
            if (aposta.getGolsTime1() > aposta.getGolsTime2()) {
                aposta.setResultado(aposta.getFkJogo().getTime1().getIdEquipe());
            } else if (aposta.getGolsTime1() < aposta.getGolsTime2()) {
                aposta.setResultado(aposta.getFkJogo().getTime2().getIdEquipe());
            } else {
                aposta.setResultado(0);
            }
            apostaDAO.atualizar(aposta);
            adicionarMensagemInformacao("Aposta feita com sucesso!");
        } catch (Exception e) {
            adicionarMensagemErro("Não foi possível apostar no jogo!\n" + e + "\nEntre em contato com mbsolutions@gmail.com");
        }
    }
}
